const whiteList = [
  // 登录相关
  '/api/teacher/login',
  '/api/teacher/logout',
  '/api/login/wechat',   // 添加微信登录接口
  '/api/login/check',    // 添加登录状态检查接口
  '/api/login/logout',   // 添加登出接口
  
  // 小程序端API
  '/api/home',          // 首页
  '/api/teachers',      // 教师列表
  '/api/course',        // 课程相关
  '/api/booking',       // 预约相关
  '/api/user',          // 用户相关
  '/api/points',        // 积分相关
  '/api/mall',          // 商城相关
  '/api/report',        // 报告相关
  '/api/category',      // 分类相关
  '/api/banners',       // 轮播图
  '/api/upload',        // 文件上传
  '/api/assistant',     // AI助手
  '/api/stores',        // 线下门店
  '/api/weblog',        // 埋点数据相关API

  // PC端后台API
  '/api/admin/banners',
  '/api/admin/course',
  '/api/admin/courses',
  '/api/admin/appointments',
  '/api/admin/evaluations',
  '/api/admin/statistics',
  '/api/admin/profile',
  '/api/admin/categories',
  '/api/admin/booking-trend',
  '/api/admin/category-statistics',
  '/api/admin/course-enrollments',
  '/api/admin/rating-distribution',
  '/api/admin/activity-heatmap',
  '/api/admin/orders',  // 添加订单管理路由
  '/api/admin/upload',  // 添加管理员上传接口
  '/api/teacher/profile',
  '/api/teacher/statistics',
  '/api/teacher/bookings',
  '/api/teacher/upload',
  
  // 静态资源
  '/uploads'
];

module.exports = async (ctx, next) => {
  // 检查请求路径是否在白名单中
  const isWhitelisted = whiteList.some(path => ctx.path.startsWith(path));
  
  if (isWhitelisted) {
    await next();
    return;
  }

  // 获取token
  const token = ctx.headers.authorization;
  
  if (!token) {
    console.log('未检测到token，路径:', ctx.path);
    ctx.status = 401;
    ctx.body = {
      code: 401,
      message: '未授权'
    };
    return;
  }

  try {
    await next();
  } catch (err) {
    ctx.status = 401;
    ctx.body = {
      code: 401,
      message: '授权失败'
    };
  }
}; 